home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Risc World 3
/
Risc World 3.iso
/
SOFTWARE
/
ISSUE2
/
CDWRITING
/
FRONTEND
/
Docs
/
Changes
< prev
next >
Wrap
Text File
|
2001-12-31
|
13KB
|
300 lines
Changes done in the following versions:
1.00-1.10
---------
* Created
1.11
----
* Fixed a bug in layer 2 routine, which made these files sound real weird.
* Added 8-bit sound support.
* Added support for ARMs without SMULL.
1.12
----
* Tuned many things to cajole the compiler into making code I like. This has
speeded up everything (especially layer 3) quite a lot.
* The program simply got too fast, which triggered a latent bug, that has
now been removed.
* Added an "auto queue" function to the frontend. This queues the next file
in the same directory if enabled.
* Added some system vars, that can control the buffer size and the volume.
1.13-1.14
---------
* Fixed a bug that could happen if none of the system vars were defined.
* Various speed improvements. Not much, but it's the right direction.
1.15
----
* Forgot to make the ID3 genre byte available in the file info block.
* Changed Auto Q to continue into directories it may meet while looking for
the next file. It will also go up and continue the scan in the parent when
meeting the end of a directory.
* Mono was untested and of course it didn't work. It seems ok now, but my
collection of mono files is very much smaller than stereo, so no
guarantees.
* If a tag is present, the player will stop looking for frames when getting
close enough to the end of the file (and only garbage can be left). Some
programs seem to align the tag on a 16 bit boundary (guess what machines
these come from), thus leaving a malformed header just before it.
1.16
----
* By request, an iconbar icon was added, so you can close/open the window
without quitting/restarting the app.
* Some more checks on the frame headers added, so it skips more silly things.
1.17
----
* Changed the skipping of daft RIFF-headed mpeg streams, so it doesn't skip
quite so much.
* More header checking, some more malformed streams work now.
* Argh, the 'clean' clipping brought back the mono bug. Now gone again.
* An error now stays displayed for the appropriate time, also if the playback
stops.
* Changed some things to make the claims in the help file true, especially
wrt pausing.
1.18
----
* Changed the cpu verification code. The plan is to have only one module soon.
* Changed the autoQ scan to look for files of same type rather than files of
type AMPEG.
1.19
----
* MPEG 2.0 layer 3 sounded weird (untested), and a bug was removed that fixed
it.
* Made the frontend quit if the module disappears.
* AMPlayer_Info now returns useful info at all times (e.g. the latest error
can be returned even if it made the player stop, which it couldn't before).
* "Stream error" replaced by 3 more descriptive messages.
* Survives more stream errors now - some weird ones could provoke a data abort
which wasn't very nice.
1.20
----
* Put a limit on the number of files that will be skipped while scanning for
a file to queue (with Auto Q). If that limit is reached, auto Q is turned
off. Currently the limit is 30, but will be user-adjustable at some point.
* Added the option of killing the module at the same time as quitting the
frontend.
1.21
----
* Skipping back and forth was somewhat erratic at large buffer sizes, so now
it discards the buffer when the target point has been located. This improves
response, but means that only fast filing systems can supply enough data
to have sound while skipping.
1.22
----
* Changed the SWI and error number bases to allocated ones. (&52E00 and
&816B00 respectively).
* Added code to check if SVC stack is almost empty when getting a callback.
This may get round some NFS/ShareFS problems, but I can't test it myself.
* Changed the frequency selection so it gets closer to the desired one if
the exact match isn't available.
1.23
----
* Changed the frame->time formula so files that last a long time should not
make the counter wrap around (though I have none of those, so it's untested)
* Changed the frontend to show the _module_ version to avoid confusion.
1.24
----
* Did a bit of research, and this enabled me to get some, if not all, of the
files working, that previously had strange bubbly noises in them. This is
apparently streams made by Xion and AudioCatalyst.
1.25
----
* Most of the time, the stack depth checking didn't actually work. This has
been fixed, and the checking method has also been changed (it now registers
a callafter to re-register the callback, to avoid getting into infinite
loops).
* Finally found the cause of the wimp errors that could crop up when stopping.
Sadly, the fix is not exactly what I would have wanted, because it means that
the dynamic area is present until the module is killed (instead of only while
playing). It does, however, give you the ability to drag the buffer size,
also when it isn't playing.
* The stack check level has been made adjustable (probably temporary until a
nice overall value is found).
* Added AMPlayer$FileBuffer that controls the input buffer size.
1.26
----
* Added another auto-queue state to the frontend, which is entered when no
file could be queued. This means that you stay in auto-queue mode, instead
of the previous behaviour where it would be turned off.
* Added the -Cue switch to the *AMPlay command.
* Added an *AMPause command.
* Added an *AMLocate command.
* Added stuff to do with upcoming plugins. It isn't complete, don't use it.
1.27
----
* Added plugin support.
* SWI AMPlayer_Info did not preserve all the FP registers in some cases.
1.28
----
* Extended plugin support.
* Added SWI AMPlayer_FileInfo
* Adjust-close on frontend window opens the directory containing the file
currently playing (if possible).
* Frontend now uses AMPlayer_FileInfo to verify files when it is looking for
the next one to queue.
* If file starts with an ID3v2 header, it will be skipped (how many headers
and stuff are people going to add before they realise that it's a new
file format and call it something else?)
* Variable bit rate MP3 files now work.
* AMPlayer$Volume is updated when the module is killed.
* ID3v1.1 tags are now supported (track numbers are now returned)
* 'Shutdown complete' now stops playing.
* Less RMA 'thrashing' (reallocation of offset cache is now 'blocky')
1.29
----
* ID3v2 support added.
* Resizing dynamic area no longer causes music to stop.
* Fixed aborts that happened occasionally with varying layers and bitrates.
* Switching between tracks played at different frequencies is smooth and
no longer gives helium-voices, or mega-lethargic-voices.
* AMLocate command now accepts hh:mm:ss and mm:ss instead of the awkward
hh[:mm[:ss]] format.
* High and low bitrates described for variable bitrate files
* MPEG 2.5 at 8kHz and 12kHz now supported.
* Stereo is around the right way.
* VBR support for 'total time' added.
* *AMInfo can now be passed a filename to provide information on that file.
* Removed API information from !Help
* Created AMPlayerSWIs manual (Andrew Hill)
* ID3v2 frame data is now 0 terminated.
1.30
----
* Fix for misused Xing VBR headers (filesize given as zero rather than
omitted).
* Minor correction of a link in the StrongHelp manual.
1.31-1.33
---------
* ARM coded many routines for speed.
* Revamped build system.
* Added application builds (for development only)
* Added SharedSound support.
* Added Streaming Interface.
* Added MetaData Interface.
* Added Internal Event System.
* Reworked read_frame routine to back out on lack of data.
* Reworked read_frame routine to cope with skipping broken data.
* Reworked all code to run from ROM (Except that using the 8 bit sound system).
* Added support for Multiple Instantiations.
* Any pending callbacks are killed on finalisation.
* Reinit active sound systems on Sound Started Service.
* Moved AMPlayer module into !System, and added dummy AMPlayer module to
load the correct variant for the CPU in use automatically.
* Adjust click on 'AutoQ' clears the queued item
* Only AMPEG files can be added to the playlist.
1.34
----
[Internal unreleased version]
1.35
----
* Improved multiple instantiation behaviour - now sends module instantiation
suffix to SharedSound as part of handler name.
* Added callback 'safety net' (if AMPlayer comes unthreaded, we rethread on
a once-per-second basis).
* Corrected stereo ordering in AMPApp.
* Added sound system config SWI, together with 'User Sound System' SWIs; this
enables decode-but-not-play operation.
* Pulled many tables into the code; this increases ROM usage (or RAM in the
softload case), but is paid back many times when we start multiply
instantiating the module. MI is now MUCH faster as no tables are generated.
* Removed stray SMULL in the synthfp code.
* Improved EOF handling in streaming case.
* Bugfixes to frame decoding code; more resistant to broken streams.
* Added Instance SWI calls.
* Added instance details to service calls (instance handle in R8).
* Responds to Sound system layers starting/stopping - so reiniting SharedSound
(or other systems where supported) does not stop playback. AMPlayer will
also degrade its sound system if SharedSound is killed, reverting when
SharedSound returns.
* Fix for shared sound 'volume scale+mixing' fill code.
* Fix for RIFF WAVE headers being incorrectly skipped (would previously skip
starts of some tracks). Also allows us to correctly perform FileInfo
requests on such files.
* AMPlayer_Plugin, AMPlayer_Control and the streaming SWIs have had their
APIs rationalised. We now support directed queries to AMPlayer.
* The AMPlayer$Volume system variable reflects the base instantiation only,
and new instantiations receive the current base instantiation volume as
their initial volume.
* Improved internal handling of stream starvation.
* Service_AMPlayer reason code 6 (Buffers becoming free) added.
* *AMLocate can now take a -ve or +ve offset to move relative to the current
position.
1.36
----
* AMPApp: Fixed -w with no output file.
* Fixed 8 bit sound system detection.
* Improved FP speed (synth routines).
1.37
----
* AMPApp: Corrected sound system detection to allow all versions to run on all
machines.
* Added transient playback. Transient playback instances will automatically be
terminated when the playback completes.
* Documentation cross references improved and AMPlayer_Control documentation
corrected.
* *AMPlay can now take -Transient to use transient playback.
* Sped up FP code.
* Sped up 32x32=>64 routines in AMPxxx6 builds.
* Added 2x decimation code to FP and 6 builds.
* AMPlayer$DecimationThreshold now used to set the sample frequency at which
decimation should kick in.
* Fixed layer 1 Mono and joint stereo.
* Fixed (we think) Layer 3 8000Hz.
* Fixed infinite loop in ID3v2 code.
* Added magic protection to directed instance calls.
* FrontEnd: Can select an instance to work with; streaming instances will
have their buttons greyed for operations which are not applicable.
* FrontEnd: Ctrl-drag file will play file 'transiently'. Mostly only useful
for testing.
* Directed calls are now protected against invalid handles being passed to
the module.
* FrontEnd: Indication of frequency improved.
* On shutdown request we pause music, which prevents a remount of the disc
after the disc is dismounted; we already stop when shutdown is complete.
* New huffman table lookup code (htc case).
* Shrunk huffman tables to halfword (ht case).
* Shrunk alloc tables from 2 words to 1 word by packing.
* New bitbuffer functions.
* Simplified logic in III_dequantize_sample and III_dequantize_sample_ms.
* Applied ARM Ltds trick for reducing table size - thanks to Andre!
* Applied single buffer change to dct36 - thanks to Andre!
* File and stream handling merged. No current benefit, but should allow
improvements later.
* AMPlay now takes -next to start the queued track
* AMVolume can accept +volume or -volume to apply relative volume levels.
* Stupid bug fixed in III_dequantise_sample_ms.
* Side info region overflow bug fixed in layer 3; appears present in MPG123
too.
* FrontEnd: Pause-Transience bug fixed (paused tracks would cause transience
requests to be ignored)
* Addition of AMPlayer_Control buffer size in blocks, as well as bytes.
* Potential fix for streaming problems (eof being set on unstarted streams)
* Fix for null instance names (now appear as 'Unknown').
* Fix for streaming problems; pending queue was being held with 0 terminator;
thus a race condition existed in which blocks were incorrectly marked as
being free.
* Fix for MPEG 1, layer III 64kbps stereo files which exhibited bit errors
and chirps.